package com.abocode.aichat.util;

import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.alibaba.fastjson.JSON;

public class ValidateUtils {
	private ValidateUtils() {
	}

	public static String getNotNullStr(Object str) {
		if (str == null)
			return "";
		return str.toString();
	}

	public static boolean isNullOrEmpty(String string) {
		return string == null || "".equals(string);
	}

	/**
	 * 指示指定的字符串是 null、空还是仅由空白字符组成。
	 * 
	 * @param value
	 * @return
	 */
	public static boolean isNullOrWhiteSpace(String value) {
		return (isNullOrEmpty(value) || value.trim().length() == 0);
	}

	public static String toJsonString(Object obj) {

		return JSON.toJSONString(obj);
	}

	public static boolean isMobile(String phoneno) {
		Pattern p = Pattern
				.compile("^((13[4-9])|(15[0-2,7-9])|(178)|(147)|(18[2-4,7-8]))\\d{8}$");  
		Matcher m = p.matcher(phoneno);
		return m.matches();
	}
	/**
	 * 资料是否合法
	 * @param phoneno
	 * @return
	 */
	public static boolean isLegitimacyNo(String phoneno) {
		Pattern p = Pattern
				.compile("(^((13[4-9])|(15[0-2,7-9])|(178)|(147)|(18[2-4,7-8]))\\d{8}$)|(^(11\\d{7})$)");  //加入假资料11 9位
		Matcher m = p.matcher(phoneno);
		return m.matches();
	}

	/**
	 * 判断字符串是否为整数（int或long），不包含小数点。
	 * 
	 * @param value
	 * @return
	 */
	public static boolean isNumeric(String value) {
		if (value == null) {
			return false;
		}

		Pattern p = Pattern.compile("^\\d+$");
		Matcher m = p.matcher(value);
		return m.matches();
	}

	/**
	 * 判断字符串是否可以转化为浮点型
	 * 
	 * @param param
	 * @return
	 */
	public static boolean isFloat(String param) {
		try {
			Float.parseFloat(param);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 判断对象或对象数组中每一个对象是否为空: 对象为null，字符序列长度为0，集合类、Map为empty
	 * 
	 * @param obj
	 * @return
	 */
	public static boolean isNullOrEmpty(Object obj) {
		if (obj == null)
			return true;

		if (obj instanceof CharSequence)
			return ((CharSequence) obj).length() == 0;

		if (obj instanceof Collection)
			return ((Collection) obj).isEmpty();

		if (obj instanceof Map)
			return ((Map) obj).isEmpty();

		if (obj instanceof Object[]) {
			Object[] object = (Object[]) obj;
			if (object.length == 0) {
				return true;
			}
			boolean empty = true;
			for (int i = 0; i < object.length; i++) {
				if (!isNullOrEmpty(object[i])) {
					empty = false;
					break;
				}
			}
			return empty;
		}
		return false;
	}

}